CREATE TABLE [dbo].[Sample](
[CCMPNY] [varchar](2) NOT NULL,
[CCUST#] [numeric](7, 0) NOT NULL,
[RDDYSR] [varchar](7) NOT NULL,
[CBLNAM] [varchar](30) NOT NULL,
[CCYCLE] [varchar](2) NOT NULL,
[RDSIZE] [varchar](2) NOT NULL,
[RDCHGC] [varchar](2) NOT NULL,
[RDDAY] [numeric](1, 0) NOT NULL,
[RDROUT] [varchar](4) NOT NULL,
[RDQTY] [numeric](5, 0) NOT NULL
我如何能得到以下布局
列红色
标记注意
that each "CCUST" generates only one data line unless
(1) there are multiple "RDCHGC" values (CCUST 43),
(2) there are multiple "RDSIZE" values (CCUST 10723); or,
(3) there are multiple "FREQ" values (no example).
感谢您的帮助。
你尝试过什么?你有没有搜索过任何东西?数字是如何被“RDSIZE”,例如它可能是'-0','IV','pi'吗?提示:使用适当的软件(MySQL,Oracle,DB2,...)和版本(例如, '的SQL服务器2014'。语法和功能的差异往往会影响答案。 – HABO
我到目前为止所能做的就是从RDDYSR字段中删除破折号,这种方式很容易计算一周的日子。 – cojimarmiami
这是一个开始。您可能需要使用['CASE'](https://msdn.microsoft.com/zh-CN/library/ms181765.aspx)表达式来帮助处理日期列,例如当CharIndex('M',RDDYSR)> 0然后RDQTY * Cast(RDSIZE as Int)else NULL end'时。请注意,通常认为将任意数据类型混合在一起是一种不好的做法,例如,将大小存储在“VARCHAR(2)”中,或者将一个大小作为字符串或单词“空白”返回给数字计算结果(“RDQTY * RDSIZE”)。 – HABO