34,838
社区成员




CREATE TABLE [dbo].[T_BODYPART](
[BodyPartIdentity] [bigint] NOT NULL,
[BodyPartName] [nvarchar](20) NOT NULL,
[BodyPartMemo] [nvarchar](50) NULL,
[DepartmentIdentity] [bigint] NULL,
[PriceIdentity] [int] NULL,
[DisplayOrder] [int] NULL,
[ReportNode] [nvarchar](255) NULL,
[ModalityTypeIdentity] [int] NULL,
[Protocolcode] [nvarchar](256) NULL,
[BodyPartCount] [int] NULL,
[EXPOSALCOUNT] [int] NULL,
[DisplayOrder2] [int] NULL,
[Price] [numeric](18, 2) NULL,
[BodyPartStoped] [smallint] NULL,
[BodyPartCode] [nvarchar](20) NULL,
CONSTRAINT [PK_T_BODYPART] PRIMARY KEY CLUSTERED
(
[BodyPartIdentity] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
SELECT TOP 1000 [F_STU_GUID]
,[F_STU_NUM]
,[F_STU_NAME]
,[F_STU_NAME_EN]
,[F_STU_SEX]
,[F_STU_AGE]
,[F_STU_BRITH]
,[F_STU_TELEPHONE]
,[F_STU_ADDRESS]
,[F_STU_PROFESSION]
,[F_STU_COMPANY]
,[F_STU_ID_CARD]
,[F_STU_NATION]
,[F_STU_MARRY]
,[F_STU_HEIGHT]
,[F_STU_WEIGHT]
,[F_STU_FEE_TYPE]
,[F_STU_IN_NUM]
,[F_STU_OUT_NUM]
,[F_STU_BUNK_NUM]
,[F_STU_SICKROOM_NUM]
,[F_STU_SICKROOM_AREA]
,[F_STU_FROM]
,[F_STU_MODEL]
,[F_STU_BODY_PART]
,[F_STU_METHOD]
,[F_STU_RESULT]
,[F_STU_SUSPICION]
,[F_STU_DISEASE]
,[F_STU_REFER_DOCTOR]
,[F_STU_REFER_OFFICE]
,[F_STU_REFER_DATE]
,[F_STU_PERFORM_DOCTOR]
,[F_STU_PERFORM_OFFICE]
,[F_STU_PERFORM_DATE]
,[F_STU_OPT_DOCTOR]
,[F_STU_OPT_DATE]
,[F_STU_WRITER]
,[F_STU_WRITE_DATE]
,[F_STU_OBSERVATION]
,[F_STU_DIAGNOSE]
,[F_STU_ADVICE]
,[F_STU_DETAIL]
FROM [PACS].[dbo].[T_STUDY_REPORT]
--sql2016
SELECT C.BODY_PART,COUNT(1),SUM(C.PRICE) FROM #T1 A OUTER APPLY string_split(F_STU_BODY_PART,'+') B
INNER JOIN #T2 C ON B.value = C.BODY_PART
GROUP BY C.BODY_PART
--3楼的数据,谢谢
SELECT a.BODY_PART,COUNT(1),SUM(a.PRICE)
FROM
#T2 a INNER JOIN #T1 b ON CHARINDEX('+'+a.BODY_PART+'+','+'+b.F_STU_BODY_PART+'+')>0
GROUP BY a.BODY_PART
IF OBJECT_ID(N'TEMPDB.DBO.#T1') IS NOT NULL
DROP TABLE #T1
GO
CREATE TABLE #T1
(ID INT IDENTITY(1,1),
F_STU_BODY_PART VARCHAR(100))
INSERT INTO #T1
SELECT 'A+B+E' UNION ALL
SELECT 'C' UNION ALL
SELECT 'D+C+A+E'
GO
IF OBJECT_ID(N'TEMPDB.DBO.#T2') IS NOT NULL
DROP TABLE #T2
GO
CREATE TABLE #T2
(BODY_PART VARCHAR(5),
PRICE INT)
INSERT INTO #T2
SELECT 'A',100 UNION ALL
SELECT 'B',200 UNION ALL
SELECT 'C',300 UNION ALL
SELECT 'D',320 UNION ALL
SELECT 'E',360 UNION ALL
SELECT 'F',420
GO
SELECT B.BODY_PART,COUNT(*) AS AMOUNT,SUM(PRICE) AS TOTAL_VALUE
FROM
(SELECT A.*,SUBSTRING(A.F_STU_BODY_PART,B.NUMBER,CHARINDEX('+',A.F_STU_BODY_PART+'+',NUMBER)-NUMBER) AS SINGLE_PART
FROM #T1 A
JOIN MASTER.DBO.SPT_VALUES B ON CHARINDEX('+','+'+A.F_STU_BODY_PART,NUMBER)=B.NUMBER
WHERE B.TYPE='P') AS A
JOIN #T2 AS B ON A.SINGLE_PART=B.BODY_PART
GROUP BY B.BODY_PART